/****************************************************************************
 * Copyright (C) 2013 Dj_Skual
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 ****************************************************************************/
#include "ManageConnectTask.hpp"
#include "../../Network/networkops.h"
#include "../../Controls/Application.h"

ManageConnectTask::ManageConnectTask()
	: ManageProgressWindow(tr("Network initialising..."), tr("Please wait..."))
	, canceled(false)
{
	Canceled.connect(this, &ManageConnectTask::OnCancelClick);
	ThreadedTaskHandler::Instance()->AddTask(this);
}

void ManageConnectTask::OnCancelClick()
{
	canceled = true;
}

void ManageConnectTask::Execute(void)
{
	ResumeNetworkThread();
	
	while(!canceled && !IsNetworkInit())
	{
		Application::Instance()->updateEvents();
	}
	
	if(canceled)
	{
		if(!IsNetworkInit())
			HaltNetworkThread();
		TaskEnd(0);
	}
	else if(!IsNetworkInit())
		TaskEnd(-1);
	else
		TaskEnd(1);
	
	Application::Instance()->PushForDelete(this);
}
